package com.example.agent_springai.system;

import lombok.Data;

/**
 * 查询条件实体类
 * 用于接收AI分析用户问题后返回的查询条件
 */
@Data
public class QueryCondition {
    
    /**
     * 是否需要发电机查询功能
     */
    private Boolean needTemperSelect = false;
    
    /**
     * 发电机编号，支持单个或多个（用逗号分隔），如"5"或"5,7"
     */
    private String generatorNo;
    
    /**
     * 用户查询要求的发电机查询的开始时间
     */
    private String temperStartDate;
    
    /**
     * 用户查询要求的发电机查询的结束时间
     */
    private String temperEndDate;
    
    /**
     * 用户查询要求的发电机最高温度
     */
    private Double temperMax;
    
    /**
     * 用户查询要求的发电机最低温度
     */
    private Double temperMin;
    
    /**
     * 是否需要机械臂查询功能
     */
    private Boolean needChainlooseSelect = false;
    
    /**
     * 是否需要查询机械臂最大电流值
     */
    private Boolean needMaxCurrentSelect = false;
    
    /**
     * 机械臂需要查询的轴列表
     */
    private String[] axisList;
    
    /**
     * 机械臂需要查询的参数列表
     */
    private String[] paramList;
    
    /**
     * 机械臂是否需要预测功能
     */
    private Boolean needChainloosePredict = false;
    
    /**
     * 机械臂是否需要故障诊断功能
     */
    private Boolean needChainlooseDiagnose = false;
    
    /**
     * 需要生成图表的参数
     */
    private ChartParams chartParams;
    
    /**
     * 是否为花卉相关问题
     */
    private Boolean isFlowerProblem = false;
    
    /**
     * 图表参数内部类
     */
    @Data
    public static class ChartParams {
        private String type;
        private String[] params;
    }

    // 兼容旧属性名的getter/setter方法
    public Boolean getNeedSelect() {
        return needTemperSelect;
    }
    
    public void setNeedSelect(Boolean needSelect) {
        this.needTemperSelect = needSelect;
    }
    
    public String getStartDate() {
        return temperStartDate;
    }
    
    public void setStartDate(String startDate) {
        this.temperStartDate = startDate;
    }
    
    public String getEndDate() {
        return temperEndDate;
    }
    
    public void setEndDate(String endDate) {
        this.temperEndDate = endDate;
    }
    
    public Double getTemperatureThreshold() {
        return temperMax;
    }
    
    public void setTemperatureThreshold(Double temperatureThreshold) {
        this.temperMax = temperatureThreshold;
    }
    
    public Boolean getNeedPredict() {
        return needChainloosePredict;
    }
    
    public void setNeedPredict(Boolean needPredict) {
        this.needChainloosePredict = needPredict;
    }
    
    public Boolean getNeedDiagnose() {
        return needChainlooseDiagnose;
    }
    
    public void setNeedDiagnose(Boolean needDiagnose) {
        this.needChainlooseDiagnose = needDiagnose;
    }
    
    public Boolean getNeedEChart() {
        return chartParams != null;
    }
}